From 9943bff5dd7513873505ddd23b70d37c9ed8fc2c Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Mon, 7 Dec 2020 21:56:57 -0600 Subject: [PATCH] Produce at startup the map of route names to paths, for template use --- src/pgwui_server/pgwui_server.py | 31 ++++++++++++++++++------------- tests/test_pgwui_server.py | 29 +++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/src/pgwui_server/pgwui_server.py b/src/pgwui_server/pgwui_server.py index 54ae788..ad556b2 100644 --- a/src/pgwui_server/pgwui_server.py +++ b/src/pgwui_server/pgwui_server.py @@ -33,6 +33,7 @@ from pgwui_common import check_settings from pgwui_common import exceptions as common_ex from pgwui_common import routes from pgwui_common import plugin +import pgwui_common.urls # Constants @@ -206,18 +207,20 @@ def autoconfigurable_components(settings, components): def apply_component_defaults(settings, components): '''Apply component default settings to existing settings ''' - config = Configurator(settings=settings) - config.include('pgwui_common') - - components_to_config = autoconfigurable_components(settings, components) - rp = settings['pgwui'].get('route_prefix') - with config.route_prefix_context(rp): - for component in components_to_config: - log.debug('Autoconfiguring PGWUI component: {}'.format(component)) - config.include(component) - routes.add_routes(config, settings) - log.debug('Done autoconfiguring PGWUI components') - return config + with Configurator(settings=settings) as config: + config.include('pgwui_common') + + components_to_config = autoconfigurable_components( + settings, components) + rp = settings['pgwui'].get('route_prefix') + with config.route_prefix_context(rp): + for component in components_to_config: + log.debug( + 'Autoconfiguring PGWUI component: {}'.format(component)) + config.include(component) + routes.add_routes(config, settings) + log.debug('Done autoconfiguring PGWUI components') + return config def pgwui_server_config(settings): @@ -225,7 +228,9 @@ def pgwui_server_config(settings): ''' components = plugin.find_pgwui_components() exit_on_invalid_settings(settings, components) - return apply_component_defaults(settings, components) + config = apply_component_defaults(settings, components) + pgwui_common.urls.add_urls_setting(config, settings) + return config def main(global_config, **settings): diff --git a/tests/test_pgwui_server.py b/tests/test_pgwui_server.py index d9d4942..4090563 100644 --- a/tests/test_pgwui_server.py +++ b/tests/test_pgwui_server.py @@ -29,12 +29,15 @@ import pgwui_common.exceptions as common_ex import pgwui_common.check_settings import pgwui_common.plugin import pgwui_common.routes +import pgwui_common.urls # Use as a regular module, not a plugin, so lint checks work from pgwui_testing import testing import pgwui_server.pgwui_server as pgwui_server import pgwui_server.exceptions as server_ex +# Activiate the PGWUI pytest plugin +pytest_plugins = ("pgwui",) # Mark all tests with "unittest" pytestmark = pytest.mark.unittest @@ -54,6 +57,9 @@ mock_validate_settings = testing.make_mock_fixture( mock_add_routes = testing.make_mock_fixture( pgwui_common.routes, 'add_routes') +mock_set_urls = testing.make_mock_fixture( + pgwui_common.urls, 'set_urls') + # Unit tests @@ -515,7 +521,7 @@ def test_apply_component_defaults(caplog, ['pgwui_mock_component_name'] result = pgwui_server.apply_component_defaults({'pgwui': {}}, []) - assert isinstance(result, type(MockConfigurator())) + assert str(type(result)) == str(type(MockConfigurator)) logs = caplog.record_tuples @@ -530,18 +536,29 @@ mock_apply_component_defaults = testing.make_mock_fixture( pgwui_server, 'apply_component_defaults') +mock_add_urls_setting = testing.make_mock_fixture( + pgwui_common.urls, 'add_urls_setting') + + # pgwui_server_config() def test_pgwui_server_config( + pyramid_config, mock_find_pgwui_components, - mock_apply_component_defaults, mock_exit_on_invalid_settings): - '''Returns a configuration''' - test_configurator = 'test configurator' - mock_apply_component_defaults.return_value = test_configurator + mock_exit_on_invalid_settings, + mock_apply_component_defaults, + mock_add_urls_setting): + '''Makes expected calls, returns a configuration + ''' + mock_apply_component_defaults.return_value = pyramid_config result = pgwui_server.pgwui_server_config({}) - assert result == test_configurator + mock_find_pgwui_components.assert_called_once() + mock_exit_on_invalid_settings.assert_called_once() + mock_apply_component_defaults.assert_called_once() + mock_add_urls_setting.assert_called_once() + assert result == pyramid_config mock_pgwui_server_config = testing.make_mock_fixture( -- 2.34.1